package xyz.ag.utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.mchange.v2.c3p0.ComboPooledDataSource;

/**
 * C3P0工具类
 * @author User
 *
 */
public class c3p0utils {
	private static ComboPooledDataSource cpds = null;
	static{
	cpds = new ComboPooledDataSource("mysql");
	}
	public static Connection GetConnection(){
		try {
			return cpds.getConnection();
		} catch (SQLException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
		return null;
	}
	//                                          ↓使用Object...传入多个参数
	public static  int executupdate(String sql,Object... params){
		Connection conn  = GetConnection();//获取连接 静态方法直接写就好
		PreparedStatement ps = null;//创建编译对象
		try {
			 ps = conn.prepareStatement(sql);
		} catch (SQLException e) {
			// TODO 自动生成的 catch 块
			System.err.println("编译对象创建失败");
		}
		try {
		for(int i =0;i<params.length;i++){
			ps.setObject(i+1, params[i]);
		}
				//循环设置参数 第一个i+1(?从1开始站位)第二个参数表示参数值
			} catch (SQLException e) {
				System.err.println("传参失败");
				e.printStackTrace();}
		try {
			return ps.executeUpdate();
		} catch (SQLException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
			
		return 0;
	}
	public static int closeconn(ResultSet rs,PreparedStatement ps,Connection conn){
		if(rs!=null){
			try {
				rs.close();
			} catch (SQLException e) {
				System.err.println("rs流失败");
				return -1;
			}
		}
		if(ps!=null){
			try {
				conn.close();
			} catch (SQLException e) {
				System.err.println("ps流失败");
				return -1;
			}
		}
		if(conn!=null){
			try {
				conn.close();
			} catch (SQLException e) {
				System.err.println("conn流失败");
				return -1;
			}
		}
		return 1;
	}
}
